package models;

import play.db.jpa.Model;

import play.*;
import play.db.jpa.*;
import javax.persistence.*;

import org.joda.time.DateTime;

import Utils.ClassUtilsDB;

import java.util.*;


public class Caixa extends Model {
	
	//Atributos
	
	private long codCaixa;
	@JoinColumns(@JoinColumn(name = "codUsuario",referencedColumnName = "codUsuario"))
	private long codUsuario;
	
	@Column(length = 50)
	private String descricao;
	private float valorTotal;
	private float valorBruto;
	private float acrescimos;
	
	@Column(length = 50)
	private float descontos;
	
	@Temporal(TemporalType.DATE)
	private Date dataLancamento;
	
	@Column(length = 2)
	private String tipoMovimentacao;
	private long codContaMovimentacao;
	
	@Column(length = 50)
	private String situacao;

	//Métodos de acesso

	public long getCodCaixa()
	{
		return this.codCaixa;
	}
	
	public long getCodUsuario()
	{
		return this.codUsuario;
	}
	
	public String getDescricao()
	{
		return this.descricao;
	}
	
	public float getValorTotal()
	{
		return this.valorTotal;
	}
	
	public float getValorBruto()
	{
		return this.valorBruto;
	}
	
	public float getAcrescimos()
	{
		return this.acrescimos;
	}
	
	public void setAcrescimos(float acrescimos)
	{
		this.acrescimos = acrescimos;
		CalcValorTotal();
	}	
	
	public float getDescontos()
	{
		return this.descontos;	
	}
	
	public void setDescontos(float descontos)
	{
		this.descontos = descontos;
		CalcValorTotal();
	}
	
	public Date getDataLancamento()
	{
		return this.dataLancamento;
	}
	
	public long getCodContaMovimentacao()
	{
		return this.codContaMovimentacao;
	}
	
	public String getSiruacao()
	{
		return this.situacao;
	}
	
	public void setSituacao(String situacao)
	{
		this.situacao = situacao;
	}
		
	//Construtor
	
	public Caixa(long codUsuario,String descricao, float valorBruto, float acrescimos,
			float descontos,String tipoMovimentacao,String situacao)
	{
		this.codCaixa	  		= ClassUtilsDB.next("Caixa", "CodCaixa");
		this.codUsuario	  		= codUsuario;
		this.descricao	  		= descricao;
		this.valorBruto	  		= valorBruto;
		this.acrescimos	  		= acrescimos;
		this.descontos	  		= descontos;
		this.tipoMovimentacao	= tipoMovimentacao;
		this.situacao			= situacao;
		this.dataLancamento	  = new Date();
		
	}
	
	
	//Métodos Auxiliares
	
	private void CalcValorTotal()
	{
		if(this.tipoMovimentacao == "+T" || this.tipoMovimentacao == "C")
		{
			this.valorTotal = this.valorBruto + (this.acrescimos - this.descontos); 
		}
		else	
		if(this.tipoMovimentacao == "-T" || this.tipoMovimentacao == "D")
		{
			this.valorTotal = this.valorBruto + (this.descontos - this.acrescimos);
		}
		else
			this.valorTotal = this.valorBruto + this.acrescimos + this.descontos;	
	}
	
	

}